// 引入 express
const express = require('express')
// 引入 mongoose 用于操作数据库
const mongoose = require('mongoose')
// 引入 cors
const cors = require('cors')
const Token = require('./utils/token')
// 引入路由模块
const userRouter = require('./routes/users')
const fileRouter = require('./routes/files')
const sessionRouter = require('./routes/sessions')

// 连接数据库
mongoose.connect('mongodb://localhost:27017/h52111')

// 创建 Express 应用
const app = express()

// 处理跨域问题 （CORS）
app.use(cors())

// 解析请求主体中的数据
app.use(express.json()) // for parsing application/json
app.use(express.urlencoded({ extended: true })) // for parsing application/x-www-form-urlencoded

// 托管静态资源
app.use(express.static('public'))

app.use('/api/v1/sessions', sessionRouter)

app.use(function(req, res, next) {
  // 在请求头中获取 token 数据
  const token = req.get('token')
  try {
    // 验证 token 是否合法
    const payload = Token.verify(token)
    console.log('payload:', payload)
    next()
  } catch (error) {
    res.json({
      code: 4000,
      data: {
        message: error.message
      }
    })
  }
})

// 使用路由模块
app.use('/api/v1/users', userRouter)
app.use('/api/v1/files', fileRouter)

// 监听端口
app.listen(9527, () => console.log('Server running at http://localhost:9527'))
